/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.googlecode.agendajedi.dao;

import com.googlecode.agendajedi.dominio.Usuario;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author Lee Majors Jedi
 */

@Repository
@Transactional

public class UsuarioDao  {

    @PersistenceContext
    private EntityManager em;

    public UsuarioDao(){

    }

    public Usuario gravar(Usuario usuario) throws DataAccessException{
        return em.merge(usuario);
    }

    public void excluir(Usuario usuario) throws DataAccessException{
        em.remove(carregar(usuario.getIdUsuario()));
    }

    public Usuario carregar(Integer id) throws DataAccessException{
        return em.find(Usuario.class, id);
    }
    public List<Usuario> obterTodos()throws DataAccessException{
        return (List<Usuario>)em.createQuery("select u from usuario u").getResultList();
    }
    public List<Usuario> obterPorNome(String nome)throws DataAccessException{

        Query consulta = em.createQuery("select u from usuario u where u.nome like :nome");
        consulta.setParameter("nome", "%" + nome + "%");
        return  (List<Usuario>)consulta.getResultList();

    }
    public List<Usuario> obterPorLogin(String login) throws DataAccessException{

        Query consulta = em.createQuery("select u from usuario u where u.login like :login");
        consulta.setParameter("login","%" + login + "%");
        return (List<Usuario>)consulta.getResultList();
    }
    public List<Usuario> obterPorLoginSenha(String login,String senha)throws DataAccessException{

       Query consulta = em.createQuery("select u from usuario u where u.login = :login and u.senha = :senha");
       consulta.setParameter("login","%" + login + "%");
       consulta.setParameter("senha","%" + senha + "%");
       List<Usuario> resultado = (List<Usuario>)consulta.getResultList();
       if(resultado.size() > 0){
           return resultado;
       }else{
           return null;
       }
    }
}
